package com.shlh.saas.mapper.twitter;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shlh.saas.entity.twitter.TwitterUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Twitter用户数据库接口
 */
@Mapper
public interface TwitterUserMapper extends BaseMapper<TwitterUser> {
    
    /**
     * 通过关键词搜索具有电子邮箱的Twitter用户
     * 
     * @param keyword 搜索关键词
     * @param offset 偏移量
     * @param limit 限制数量
     * @return 符合条件的Twitter用户列表
     */
    @Select("<script>" +
            "SELECT id, email, name, screen_name, followers, created_at FROM twitter_user WHERE email IS NOT NULL AND email != '' " +
            "AND (name LIKE CONCAT('%',#{keyword},'%') " +
            "OR screen_name LIKE CONCAT('%',#{keyword},'%')) " +
            "ORDER BY id " +
            "LIMIT #{limit} OFFSET #{offset}" +
            "</script>")
    List<TwitterUser> searchTwitterUsersWithEmail(@Param("keyword") String keyword, 
                                                 @Param("offset") int offset, 
                                                 @Param("limit") int limit);
    
    /**
     * 统计通过关键词搜索具有电子邮箱的Twitter用户数量
     * 
     * @param keyword 搜索关键词
     * @return 符合条件的用户数量
     */
    @Select("<script>" +
            "SELECT COUNT(*) FROM twitter_user WHERE email IS NOT NULL AND email != '' " +
            "AND (name LIKE CONCAT('%',#{keyword},'%') " +
            "OR screen_name LIKE CONCAT('%',#{keyword},'%'))" +
            "</script>")
    long countTwitterUsersWithEmail(@Param("keyword") String keyword);
    
    /**
     * 通过关键词搜索Twitter用户（针对电话搜索模式）
     * 注意：由于Twitter表中没有phone列，此方法返回空结果
     * 
     * @param keyword 搜索关键词
     * @param offset 偏移量
     * @param limit 限制数量
     * @return 符合条件的Twitter用户列表
     */
    @Select("<script>" +
            "SELECT id, email, name, screen_name, followers, created_at FROM twitter_user WHERE " +
            "(name LIKE CONCAT('%',#{keyword},'%') " +
            "OR screen_name LIKE CONCAT('%',#{keyword},'%')) " +
            "LIMIT 0" +
            "</script>")
    List<TwitterUser> searchTwitterUsersWithPhone(@Param("keyword") String keyword, 
                                                 @Param("offset") int offset, 
                                                 @Param("limit") int limit);
    
    /**
     * 统计通过关键词搜索Twitter用户数量（针对电话搜索模式）
     * 注意：由于Twitter表中没有phone列，此方法返回0
     * 
     * @param keyword 搜索关键词
     * @return 符合条件的用户数量
     */
    @Select("SELECT 0")
    long countTwitterUsersWithPhone(@Param("keyword") String keyword);
    
    /**
     * 根据邮箱精确查询Twitter用户
     * 
     * @param email 邮箱地址
     * @return 匹配的Twitter用户列表
     */
    @Select("SELECT id, email, name, screen_name, followers, created_at FROM twitter_user WHERE email = #{email} LIMIT 10")
    List<TwitterUser> findByEmail(@Param("email") String email);
} 